The present invention relates generally to middleware and, more particularly, to middleware for optimizing collocation of Java and non-Java language applications.
Enterprises or business organizations utilize many different software components to manage the Quality of Service (computer network performance) required by their core and critical applications. Enterprise application software (EAS) is computer software used to satisfy the needs of an organization. Enterprise middleware software provides services such as concurrency, transactions, threading, messaging and security for enterprise applications.
One example of a middleware software component is a distributed transaction processing product that follows a process-based architecture and supports hosting of CICS based COBOL, C/C++, PL/I and Java applications. Such distributed transaction processing systems allow Java applications to run as a transaction. Transaction processing usually requires coordination of multiple program run-times such as C, Java, COBOL, PL/I. The transaction flow from multiple language runtimes can be decided dynamically, and the transaction processing facility on the transaction environment creates a challenge to load the language runtime in a transaction processing heap storage area.
Distributed transaction processing systems following a process-based architecture allow for the running of multiple applications, such as COBOL, C/C++, PL/I and Java all co-located in the same environment. Such systems initialize an appropriate language run time in each of the operating system process forced by the middleware, prior to executing the application. For example, if the application is based on Java, a Java Virtual Machine (JVM) is initialized in every independent process managed by the middleware. While this is an acceptable architecture for applications that have relatively few requirements of scaling, the transaction can be defined as a change of state of a system where the change state confirms to ACID (Atomicity, Concurrence, Isolation and Durability) properties of the database transaction. Therefore, to maintain the ACID properties, the current infrastructure in transaction processing allows JVM to load as part of its process space to execute Java programs. Although the current method supports the ACID properties and maintains transaction context across language run-times, it becomes a challenge for applications that need large scaling requirements, due to: (1) high resource usage by every JVM initialized in each process (large memory usage, CPU usage, etc.); (2) slow startup (as the JVM initialization is a slow process); and (3) the JVM itself is multithreaded and the Java applications are designed to leverage the Thread model.